package com.itheima.common;


import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;


//此处配置一个MybatisPLUS提供的工具，用于自动填充
@Component
@Slf4j
//此处通过实现MetaObjecThandler方法，对自定义元数据进行注入
public class MyMetaObjecThandler implements MetaObjectHandler {

//    此处对实体类中的,参与添加操作的属性进行注入处理
    @Override
    public void insertFill(MetaObject metaObject) {


        metaObject.setValue("createUser",BaseContext.getCurrentId());
        metaObject.setValue("updateUser",BaseContext.getCurrentId());
        metaObject.setValue("createTime",LocalDateTime.now());
        metaObject.setValue("updateTime",LocalDateTime.now());


    }

//    此处对实体类中参与修改的属性进行注入
    @Override
    public void updateFill(MetaObject metaObject) {
        //    此处获取线程ID，测试是否为同一个线程对象
//        long threadId = Thread.currentThread().getId();
//        log.info("线程ID为：{}",threadId);

        metaObject.setValue("updateUser",BaseContext.getCurrentId());
        metaObject.setValue("updateTime",LocalDateTime.now());
        log.info("此处对实体类中参与修改的属性进行注入");
    }
}
